package com.tiancheng.trade.payment.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 退款
 */
@Data
@TableName("int_refund_flow")
public class IntRefundFlow implements Serializable {

    // 主键
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 退款流水号
     */
    private String flowId;

    /**
     * 退对应的支付流水号
     */
    private String payFlowId;

    /**
     * 退款订单号
     */
    private String paymentId;

    /**
     * 退款渠道订单号
     */
    private String transactionId;

    /**
     * 收单机构订单号
     */
    private String tradeNo;

    /**
     * 订单名称
     */
    private String orderName;

    /**
     * 下单应用
     */
    private String orderApp;

    /**
     * 订单总金额
     */
    private Integer orderAmount;

    /**
     * 实际退款金额
     */
    private Integer amount;

    /**
     * 申请退款金额
     */
    private Integer refundAmount;

    /**
     * 退款状态
     */
    private String refundStatus;

    /**
     * 退款渠道
     */
    private String paymentChannel;

    /**
     * 支付方式
     */
    private String paymentWay;

    /**
     * 渠道费率
     */
    private BigDecimal slottingRate;

    /**
     * 退款时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime flowTime;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    /**
     * 用户id
     */
    private String userId;

    /**
     * 用户手机号
     */
    private String userTel;

    /**
     * 支付场景（app/miniapp/H5/wxapp/pcweb/face-swiping/scan）
     */
    private String payScene;

    /**
     * 清分状态：ING=清分中；ERROR=异常；SUCCESS=清分完成
     */
    private String settleStatus;

    /**
     * 退款类型，0-整单，1-部分
     * @see com.tiancheng.trade.payment.enums.ChannelRefundTypeEnum
     */
    private Integer refundType;
    // 币种
    private String currency;
}
